import { ApiProperty } from '@nestjs/swagger';
import { IsString, IsNotEmpty, IsNumber, IsOptional, MaxLength, Min } from 'class-validator';

export class CreateNodeDto {
  @ApiProperty({ description: '节点名称', example: '科技' })
  @IsString({ message: '节点名称必须是字符串' })
  @IsNotEmpty({ message: '节点名称不能为空' })
  @MaxLength(50, { message: '节点名称不能超过50个字符' })
  name: string;

  @ApiProperty({ description: 'URL友好的标识符', example: 'tech' })
  @IsString({ message: '标识符必须是字符串' })
  @IsNotEmpty({ message: '标识符不能为空' })
  @MaxLength(50, { message: '标识符不能超过50个字符' })
  slug: string;

  @ApiProperty({ description: '节点描述', example: '科技相关话题讨论' })
  @IsString({ message: '节点描述必须是字符串' })
  @IsNotEmpty({ message: '节点描述不能为空' })
  @MaxLength(200, { message: '节点描述不能超过200个字符' })
  description: string;

  @ApiProperty({ 
    description: '父节点ID，null表示顶级节点', 
    example: 1, 
    required: false 
  })
  @IsOptional()
  @IsNumber({}, { message: '父节点ID必须是数字' })
  @Min(1, { message: '父节点ID必须大于0' })
  parentId?: number;

  @ApiProperty({ 
    description: '排序权重，数值越大越靠前', 
    example: 0, 
    default: 0, 
    required: false 
  })
  @IsOptional()
  @IsNumber({}, { message: '排序权重必须是数字' })
  @Min(0, { message: '排序权重必须大于等于0' })
  sort?: number;
} 